package com.tedu.api.list;


import org.junit.Test;

import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 存放相同的数据----->数组
 *  数组定义：int [] i=mew int[10];  定长
 *  需求：存898个元素，不限制任意类型【基本数据类型、引用类型】
 *  集合解决上述问题
 *  集合：存不确定的元素数，存任意类型【限定类型】【重点】
 *  包位置：java.util
 *  Collection 顶级容器 接口
 *  作用：集合中提供了所有容器的通用方法，维护元素，操作元素
 *
 *  Collection 顶级接口---创建对象，两个常用字接口：
 *  List集合【接口】：可重复集合，并且有序【存储特点】
 *      List子缺口下：ArrayList 数组集合
 *  Set集合【接口】，不可重复集合【存储特点】
 *
 *
 *
 *  创建顶级集合对象----多态----接口 引用=new  子接口【实现类】();
 */
public class CollectionAPI {
    @Test
    public void Collection() {
        /**
         * Collection对象方法
         * add()方法  返回值：boolean
         * 语法：add(任意类型元素)
         * 作用：向当前集合中添加给定元素，可以为任意类型！
         *      如果元素存入成功，返回true失败 false
         * size()方法	返回值:int
         * 作用：返回集合个数----[数组Length：返回数组长度】
         * isEmpty()方法	返回值:boolean
         * 作用：判断元素是否为空，返回集合元素有值【不是空】 返回值false
         *                             没有值【是空】   返回值true
         * clear()方法	返回值:void
         *作用：清空集合元素
         */
        //创建【容器】顶级集合:不定长，无限存【集合尽量存相同数据】
        Collection c=new ArrayList();
        c.add("one");
        c.add(2);
        c.add(new Frame());
        c.add(true);
        c.add('1' );
        c.add(1.2);
        System.out.println("打印容器【顶级集合】:"+c);
        System.out.println("打印集合个数:"+c.size());
        //c.clear(); //清空元素
        boolean b=c.isEmpty();
        System.out.println("集合中是否存在元素："+b);
    }
    /**
     * remove()   返回值：boolean
     * 作用：从集合中删除给定元素，如果删除元素重复  只删除匹配第一元素数据
     *     底层：使用equals方法判断删除元素
     *
     */
    @Test
    public void testRemove(){
        Collection c=new ArrayList();
        c.add("2");c.add("3");c.add("d");
        c.add("3");c.add("4");c.add("5");
        System.out.println("集合元素："+c);
        c.remove("3");
        System.out.println("删除集合元素："+c);
    }
    @Test
    public void testAll() {
//创建第一个集合
        Collection c1 = new ArrayList();
        c1.add("web");
        c1.add("java");
        c1.add("c");
//创建第二个集合
        Collection c2 = new ArrayList();
        c2.add("go");
        c2.add("php");
        c2.add("net");
//并集 c2集合元素添加到c1集合元素中
boolean b=c1.addAll(c2);
        System.out.println("并集是否成功："+b);
        System.out.println("并集结果:"+c1);

    }
    /**
     * containAll() 返回值：boolean
     * 作用：判断当前集合是否包括给定集合中的所有元素
     * 判断：两个集合所有的集合是否一致 true/false
      */
    @Test
    public void testContainsAll(){
        Collection c1=new ArrayList();
        c1.add("go");c1.add("java");
        Collection c2=new ArrayList();
        c2.add("java");c2.add("go");
        //判断：c1集合是否包含c2集合【集合存入元素顺序不一致】
        boolean b=c1.contains(c2);
        System.out.println("c1集合是否包含c2集合:"+b);
    }
    /**
     * removeAll(Collection c)   返回值boolean
     * 作用：删除当前集合中与给定集合中共有元素【交集】
     */
    @Test
    public void testRemoveAll(){
        Collection c1=new ArrayList();
        c1.add("1");c1.add("2");c1.add("3");
        Collection c2=new ArrayList();
        c2.add("2a");c2.add("1");c2.add("4");
        boolean b =c1.equals(c2);
        System.out.println("交集是否成功:"+b);
        System.out.println("交集集合结果:"+c1);
    }
}